package main

/**
runtime 包
*/

import (
	"fmt"
	"runtime"
	"time"
)

func init() {
	// 设置go程序执行的最大逻辑CPU的数量 [1, 256]
	n := runtime.GOMAXPROCS(runtime.NumCPU())
	fmt.Println(n)
}

func main() {
	// go root目录
	// fmt.Println("GOROOT ==== ", runtime.GOROOT())

	// 操作系统平台
	//fmt.Println("os/platform ===== ", runtime.GOOS) // windows

	// 逻辑CPU的数量
	//fmt.Println("逻辑CPU的数量 ====", runtime.NumCPU()) // 4

	// gosched
	//go func() {
	//	for i := 0; i < 15; i++ {
	//		fmt.Println("gorouttine ...")
	//	}
	//}()
	//
	//for i := 0; i < 4; i++ {
	//	// 让出时间片, 让别的groutine执行
	//	runtime.Gosched()
	//	fmt.Println(" main ..")
	//}

	go func() {
		fmt.Println("groutine 开始...")
		fun()
		fmt.Println("groutine 结束...")
	}()

	time.Sleep(time.Second)

}

func fun() {
	defer fmt.Println("defer ...")
	//return	// 终止函数, 函数内部return后面的代码不会执行
	runtime.Goexit() // 终止当前的goroutine
	fmt.Println("fun函数体执行 ...")
}
